package cqrtplm.controller;


import com.hustcad.plm.pdm.doc.dto.Document;
import com.ty.basic.response.ResponseResult;
import cqrtplm.service.DocFolderOperationService;
import cqrtplm.service.FlowControlService;
import cqrtplm.vo.ModelStatisticsVO;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.math.BigInteger;
import java.util.List;


@RestController
@RequestMapping({"/rest/xxx/v2/part"})
public class DocController {
//    @Resource
//    private TyplmTypeService typlmTypeService;
//
//    @Resource
//    private TyplmLogger typlmLogger;
//
//    @Resource
//    private TyplmDocumentService typlmDocumentService;

    @Resource
    private DocFolderOperationService docFolderOperationService;
//
//    @Resource
//    private TyplmSubFolderLinkService typlmSubFolderLinkService;
//
//    @Resource
//    private TyplmHyperlinkService typlmHyperlinkService;
    //    private TyplmDocumentService typlmDocumentService;

    @Resource
    private FlowControlService flowControlService;


    @PostMapping("/checkDocByName")
    public ResponseResult checkDocByName(@RequestBody List<Document> documentList){
        return ResponseResult.success(docFolderOperationService.checkDocByName(documentList));
    }

    @GetMapping("/query")
    public ResponseResult<List<ModelStatisticsVO>> queryDifferentModelsUnderTheEBOMNumber(){
        flowControlService.checkWorkFlowPartData(new BigInteger("761747235072196608"));
        return ResponseResult.success(/*docFolderOperationService.queryDifferentModelsUnderTheEBOMNumber()*/);
    }

    @GetMapping("/ebom/query")
    public ResponseResult queryEBOM(){
        return ResponseResult.success(docFolderOperationService.ebomQuery("ty.inteplm.part.CTyPart|EBOM_NUM"));
    }


//    @PostMapping({"/add"})
//    @ApiOperation(
//            value = "新建文档v2",
//            notes = "新建文档v2",
//            produces = "application/json; charset=utf-8"
//    )
//    public ResponseResult<DocumentVO> insertDoc(List<MultipartFile> fileList, HttpServletRequest request) {
//
//
//
//        SaveDocDTO saveDocDto = new SaveDocDTO();
//        FileGroupDTO fileGroupDto = new FileGroupDTO();
//        fileGroupDto.setFiles(fileList);
//        Integer isMainFile = (Integer) JSON.parseObject(request.getParameter("isMainFile"), Integer.class);
//        if (ObjectUtils.isNotEmpty(isMainFile)) {
//            fileGroupDto.setIsMainFile(isMainFile);
//        }
//
//        CreateDocInputDTO createDocInputDTO = (CreateDocInputDTO)JSON.parseObject(request.getParameter("createDocInputDTO"), CreateDocInputDTO.class);
//
//        CreateDocInputDTO createDocInputDTO2= null;
//
//        boolean isCreateHyperlinks=false;
//
//
//        //        typlmSubFolderLinkService.batchQueryFolderPathVOByIdList()
//        if (ObjectUtils.isNotEmpty(createDocInputDTO)) {
//            String typeOid = createDocInputDTO.getType();
//            if (StringUtils.isNotBlank(typeOid)) {
//                this.typlmTypeService.checkTypeInstance(Collections.singletonList(new BigInteger(typeOid)));
//            }
//            /**
//             * 判断容器类型是CTyPDMLinkProduct还是CTyProject
//             */
//           if (createDocInputDTO.getContainerType().equals("ty.inteplm.product.CTyPDMLinkProduct")){
//
//               String oId = docFolderOperationService.selectCabinetIdByCabinetId(createDocInputDTO.getContainerId());
//               SubfolderDO subfolderDO = docFolderOperationService.obtainTheDirectoryBasedOnItsName(
//                       createDocInputDTO.getDocType(), createDocInputDTO.getContainerId());
//
//
//               // 修复路径
//               String path = createDocInputDTO.getFolderPath().substring(0, createDocInputDTO.getFolderPath()
//                       .substring(1).indexOf("/") + 1)+createDocInputDTO.getDocType();
//               createDocInputDTO.setFolderPath(path);
//               /**
//                * 判断是否存在域类型名相同的文件夹
//                */
//               if (ObjectUtils.isEmpty(subfolderDO)){
//                   /**
//                    * 不存在类型名称相同的文件夹
//                    */
//                   SubfolderVO subfolder=new SubfolderVO();
//                   subfolder.setName(createDocInputDTO.getDocType());
//                   subfolder.setDescription("--系统自动创建--文件夹--");
//                   subfolder.setParentOid(oId);
//                   subfolder.setParentOtype("ty.inteplm.folder.CTyCabinet");
//                   SubfolderWebVO subfolderWebVO = typlmSubFolderLinkService.createSubfolder(subfolder);
//
//                   createDocInputDTO.setFolderId(subfolderWebVO.getOid());
//
//
//               }else {
//                   /**
//                    * 存在类型名称相同的文件夹
//                    */
//                   createDocInputDTO.setFolderId(subfolderDO.getOid().toString());
//
//               }
//           }else if (createDocInputDTO.getContainerType().equals("ty.inteplm.project.CTyProject")){
//               DocxxxxVO docxxxxVO = docFolderOperationService.selectProjectBycContainerId(
//                       createDocInputDTO.getContainerId());
//
//               if (ObjectUtils.isNotEmpty(docxxxxVO)&&docxxxxVO.getSecuritylabels().equals("非密")){
//                   PDFProjectVO v = docFolderOperationService.selectPdmIdsByName("文档库");
//                   if (ObjectUtils.isNotEmpty(v)){
//                       //将是否创建超链接修改为是
//                       isCreateHyperlinks=true;
//                       createDocInputDTO2=new CreateDocInputDTO();
//                       BeanUtil.copyProperties(createDocInputDTO,createDocInputDTO2);
//
//                       createDocInputDTO.setContainerType("ty.inteplm.product.CTyPDMLinkProduct");
//                       createDocInputDTO.setContainerId(v.getOId());
//                       createDocInputDTO.setProductInfoID(v.getOId());
//
//                       SubfolderDO subfolderDO = docFolderOperationService.obtainTheDirectoryBasedOnItsName(
//                               createDocInputDTO.getDocType(), v.getOId());
//                       //判断文档库下面是否已经有与类型名称相同的目录
//                       if (ObjectUtils.isNotEmpty(subfolderDO)){
//                           //存在与类型名称相同的目录
//                           createDocInputDTO.setFolderId(subfolderDO.getOid().toString());
//                       }else {
//                           //不存在与类型名称相同的目录
//                           String oId = docFolderOperationService.selectCabinetIdByCabinetId(v.getOId());
//                           SubfolderVO subfolder=new SubfolderVO();
//                           subfolder.setName(createDocInputDTO.getDocType());
//                           subfolder.setDescription("--系统自动创建--文件夹--");
//                           subfolder.setParentOid(oId);
//                           subfolder.setParentOtype("ty.inteplm.folder.CTyCabinet");
//                           SubfolderWebVO subfolderWebVO = typlmSubFolderLinkService.createSubfolder(subfolder);
//                           createDocInputDTO.setFolderId(subfolderWebVO.getOid());
//                       }
//
//                   }
//               }
//           }
//
//
//
//            createDocInputDTO.setNumber(StringUtils.trim(createDocInputDTO.getNumber()));
//            createDocInputDTO.setName(StringUtils.trim(createDocInputDTO.getName()));
//            this.resetLifecycleStateKey(createDocInputDTO, request);
//            saveDocDto.setCreateDocInputDTO(createDocInputDTO);
//        }
//
//        Map<String, List<String>> maps = (Map)JSON.parseObject(request.getParameter("ibaAttribute"), Map.class);
//        if (CollUtil.isNotEmpty(maps)) {
//            saveDocDto.setIbaAttribute(maps);
//        }
//
//        List<FileDataVO> fileDataVO = JSON.parseArray(request.getParameter("fileDataVO"), FileDataVO.class);
//        if (CollUtil.isNotEmpty(fileDataVO)) {
//            saveDocDto.setFileDataVOList(fileDataVO);
//        }
//
//        String description = request.getParameter("description");
//        if (StringUtils.isNotBlank(description)) {
//            List<String> descriptionList = JSON.parseArray(description, String.class);
//            fileGroupDto.setDescriptionList(descriptionList);
//        }
//
//        saveDocDto.setFileGroupDto(fileGroupDto);
//        String workspaceOid = request.getParameter("workspaceId");
//        saveDocDto.setWorkspaceOid(workspaceOid);
//
//        try {
//            DocumentVO docVo = this.typlmDocumentService.insertDoc(saveDocDto);
//            String oidStr = docVo.getOid();
//            if (StringUtil.isNotEmpty(oidStr) && oidStr.contains(":")) {
//                oidStr = oidStr.split(":")[1];
//            }
//
//            docVo.setDocOid(oidStr);
//            this.typlmLogger.info(new CTyEntityBaseDO(CommonUtil.stringToBigInteger(oidStr), docVo.getOtype()), LogEventEnum.CRATE_OBJECT);
//
//            //判断是否创建超链接
//            if (isCreateHyperlinks){
//                //创建超链接
//                HyperlinkDTO hyperlinkDTO = docFolderOperationService.assignmentToHyperlinkDTO(createDocInputDTO2,docVo);
//                List<HyperlinkDTO> l=new ArrayList<>();
//                l.add(hyperlinkDTO);
//                typlmHyperlinkService.batchCreateHyperlink(l);
//
//            }
//
//            return ResponseResult.success(docVo);
//        } catch (Exception var13) {
//            AuditLogDO auditLogDO = new AuditLogDO();
//            auditLogDO.setObjotype("ty.inteplm.doc.CTyDoc");
//            auditLogDO.setTargettype(createDocInputDTO.getType());
//            auditLogDO.setContaineroidStr(createDocInputDTO.getContainerId());
//            auditLogDO.setContainerotype(createDocInputDTO.getContainerType());
//            auditLogDO.setTargetname(createDocInputDTO.getName());
//            auditLogDO.setTargetnumber(createDocInputDTO.getNumber());
//            auditLogDO.setLifecyclestatekey(createDocInputDTO.getLifecycleStateKey());
//            auditLogDO.setLifecyclestageotype(createDocInputDTO.getLifecycleStateKey());
//            auditLogDO.setTargetsecuritylabels(createDocInputDTO.getSecurity());
//            this.typlmLogger.errorInfo(LogEventEnum.CRATE_OBJECT, auditLogDO, var13);
//            throw var13;
//        }
//    }
//    private void resetLifecycleStateKey(CreateDocInputDTO createDocInputDTO, HttpServletRequest request) {
//        if (!StringUtils.isNotBlank(createDocInputDTO.getLifecycleStateKey())) {
//            JSONObject jsonObject = JSON.parseObject(request.getParameter("createDocInputDTO"));
//            String lifecycleState = jsonObject.getString("lifecycleState");
//            if (StringUtils.isNotBlank(lifecycleState)) {
//                createDocInputDTO.setLifecycleStateKey(lifecycleState);
//            }
//
//        }
//    }
}
